/*
 * SerializableToFile.h
 *
 *  Created on: 31/01/2010
 *      Author: San Martín, Matías I.
 */

#ifndef SERIALIZABLETOFILE_H_
#define SERIALIZABLETOFILE_H_

#ifndef size_t
#include <cstring>
#endif

#include "Serializable.h"

namespace framework {
namespace io {


/**
 * Define la interfaz que deben implementar una clase para ser serializable
 * a un archivo representado por un file descriptor
 */
class SerializableToFile : public Serializable {

public:
	/**
	 * Permite guardar el objeto en un archivo
	 *
	 * @param fd file descriptor abierto con permisos de escritura en donde
	 * 			se desea guardar el objeto
	 *
	 * @return cantidad de Bytes escritos en el archivo.
	 */
	virtual size_t save (int fd) const = 0;

	/**
	 * Permite cargar el objeto desde un archivo
	 *
	 * @param fd file descriptor abierto con permisos de lectura de donde
	 * 			se pueden obtener los datos necesarios para recuperar el
	 * 			contenido del objeto (debe tener el formato que se obtiene
	 * 			con la ejecucion del metodo save).
	 *
	 * @return cantidad de Bytes leidos del archivo.
	 */
	virtual size_t load (int fd) = 0;

};

}// namespace framework
}// namespace io

#endif /* SERIALIZABLETOFILE_H_ */
